﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CeA.Reports.Atendimento.Web.WebControls;
using CeA.Reports.Atendimento.DataAccess.Criteria;
using CeA.Reports.Atendimento.DataAccess.DTO;
using Qtech.Reports.Atendimento.Services;
using CeA.Reports.Atendimento.Web.Helpers;

namespace CeA.Reports.Atendimento.Web.admin {
    public partial class lojacadastro : System.Web.UI.Page {

        protected void Page_Init(object sender, EventArgs e)                        {
            cmdPesquisarRfs.Click += new EventHandler(cmdPesquisarRfs_Click);
            cmdPesquisarRegiao.Click += new EventHandler(cmdPesquisarRegiao_Click);
            cmdPesquisarEspecialista.Click += new EventHandler(cmdPesquisarEspecialista_Click);

            cmdVoltar.Click += new EventHandler(cmdVoltar_Click);
            cmdVoltarB.Click += new EventHandler(cmdVoltar_Click);

            cmdSalvar.Click += new EventHandler(cmdSalvar_Click);
            cmdSalvarB.Click += new EventHandler(cmdSalvar_Click);

            cmdEditar.Click += new EventHandler(cmdEditar_Click);
            cmdEditarB.Click += new EventHandler(cmdEditar_Click);

            pesquisaRfs.Confirmar += new PesquisaRfs.ConfirmarEventHandler(pesquisaRfs_Confirmar);
            pesquisaRegiao.Confirmar += new PesquisaRegiao.ConfirmarEventHandler(pesquisaRegiao_Confirmar);
            pesquisaEspecialista.Confirmar += new PesquisaEspecialista.ConfirmarEventHandler(pesquisaEspecialista_Confirmar);
        }

        
        protected void Page_Load(object sender, EventArgs e)                        {
            if (PreviousPage != null) {
                this.CodigoLoja = PreviousPage.CodigoLoja;
                this.PageMode = PreviousPage.PageMode;
                carregar();
            }

            if (!Page.IsPostBack) {
                if (this.PageMode == "EDIT")
                    configEditMode(true);
                else
                    configEditMode(false);
            }

            int id = 0;            
            if (int.TryParse(Request["id"], out id) && !Page.IsPostBack)  {
                this.CodigoLoja = id;
                carregar();
            }
        }


        protected void cmdPesquisarRfs_Click(object sender, EventArgs e)            {
            pesquisaRfs.pop();
        }


        protected void cmdPesquisarRegiao_Click(object sender, EventArgs e)         {
            pesquisaRegiao.pop();
        }


        protected void cmdPesquisarEspecialista_Click(object sender, EventArgs e)   {
            pesquisaEspecialista.pop();
        }

        
        protected void cmdVoltar_Click(object sender, EventArgs e)                  {
            if(this.PageMode == "PLANEJAMENTO") 
                NavigationHelper.RefererRedirect("/admin/loja.aspx?tag=plan");
            else
                NavigationHelper.RefererRedirect("/admin/loja.aspx");
        }
        

        protected void cmdSalvar_Click(object sender, EventArgs e)                  {
            if (this.CodigoLoja > 0)
                atualizar();
            else
                inserir();

            configEditMode(false);
        }


        protected void cmdEditar_Click(object sender, EventArgs e)                  {
            configEditMode(true);
        }


        private void carregar()                                                     {
            int lojaId = this.CodigoLoja;
            if (lojaId > 0) {
                LojaDTO ds = CadastroFacade.GetLoja(lojaId);

                txtSigla.Text           = ds.Sigla;
                txtNome.Text            = ds.Nome;
                txtRfs.Text             = ds.Rfs.Nome;
                txtRegiao.Text          = ds.Regiao.Nome;
                txtEspecialista.Text    = ds.Especialista.Nome;
                txtUF.Text              = ds.Uf;
                txtCidade.Text          = ds.Cidade;
                txtCEP.Text             = ds.Cep;
                txtLogradouro.Text      = ds.Logradouro;
                txtBairro.Text          = ds.Bairro;
                txtComplemento.Text     = ds.Complemento;
                txtTelefone.Text        = ds.Telefone;
                txtContato.Text         = ds.Contato;
                txtDescricao.Text       = ds.Descricao;
                txtBranchNo.Text        = ds.QmaticInfo.BranchNumber == 0 ? null : Convert.ToString(ds.QmaticInfo.BranchNumber);
                txtIPLocal.Text         = ds.QmaticInfo.LocalhostIp;
                txtPortaSocket.Text     = ds.QmaticInfo.PortaSocket == 0 ? null : Convert.ToString(ds.QmaticInfo.PortaSocket);
                txtQSYS.Text            = ds.QmaticInfo.QSys;
                txtQWIN.Text            = ds.QmaticInfo.QWin;

                this.CodigoRfs          = ds.Rfs.Id;
                this.CodigoRegiao       = ds.Regiao.Id;
                this.CodigoEspecialista = ds.Especialista.Id;
            }
        }


        private void atualizar()                                                    {
            LojaDTO dto = buildLojaDTO();
            CadastroFacade.UpdateLoja(dto);
            this.PageMode = "VIEW";
            MessageBox.pop("Registro atualizado com sucesso!");
        }


        private void inserir()                                                      {
            LojaDTO dto = buildLojaDTO();
            dto = CadastroFacade.SaveLoja(dto);
            this.CodigoLoja = dto.Id;
            this.PageMode = "VIEW";
            MessageBox.pop("Registro inserido com sucesso!");
        }


        private LojaDTO buildLojaDTO()                                              {
            LojaDTO dto = new LojaDTO();
            dto.Id                      = this.CodigoLoja;
            dto.Sigla                   = txtSigla.Text;
            dto.Nome                    = txtNome.Text;
            dto.Uf                      = txtUF.Text;
            dto.Cidade                  = txtCidade.Text;
            dto.Cep                     = txtCEP.Text;
            dto.Logradouro              = txtLogradouro.Text;
            dto.Bairro                  = txtBairro.Text;
            dto.Complemento             = txtComplemento.Text;
            dto.Telefone                = txtTelefone.Text;
            dto.Contato                 = txtContato.Text;
            dto.Descricao               = txtDescricao.Text;
            dto.QmaticInfo.BranchNumber = txtBranchNo.Text.Trim().Length > 0 ? Convert.ToInt32(txtBranchNo.Text) : 0;
            dto.QmaticInfo.LocalhostIp  = txtIPLocal.Text;
            dto.QmaticInfo.PortaSocket  = txtPortaSocket.Text.Trim().Length > 0 ? Convert.ToInt32(txtPortaSocket.Text) : 0;
            dto.QmaticInfo.QSys         = txtQSYS.Text;
            dto.QmaticInfo.QWin         = txtQWIN.Text;

            dto.Rfs.Id                  = this.CodigoRfs;
            dto.Regiao.Id               = this.CodigoRegiao;
            dto.Especialista.Id         = this.CodigoEspecialista;
            
            return dto;
        }


        private void configEditMode(bool isEditMode)                                {
            foreach (Control c in pageContainer.Controls) {
                if (c is TextBox) {
                    if (!isEditMode)
                        (c as TextBox).CssClass = "text-field-ro";
                    else
                        (c as TextBox).CssClass = "text-field";
                }
            }
            
            txtSigla.Enabled                 = isEditMode;
            txtNome.Enabled                  = isEditMode;
          //txtRfs.Enabled                   = isEditMode;
          //txtRegiao.Enabled                = isEditMode;
          //txtEspecialista.Enabled          = isEditMode;
            txtUF.Enabled                    = isEditMode;
            txtCidade.Enabled                = isEditMode;
            txtCEP.Enabled                   = isEditMode;
            txtLogradouro.Enabled            = isEditMode;
            txtBairro.Enabled                = isEditMode;
            txtComplemento.Enabled           = isEditMode;
            txtTelefone.Enabled              = isEditMode;
            txtContato.Enabled               = isEditMode;
            txtDescricao.Enabled             = isEditMode;
            txtBranchNo.Enabled              = isEditMode;
            txtIPLocal.Enabled               = isEditMode;
            txtPortaSocket.Enabled           = isEditMode;
            txtQSYS.Enabled                  = isEditMode;
            txtQWIN.Enabled                  = isEditMode;

            cmdPesquisarRfs.Visible          = isEditMode;
            cmdPesquisarRegiao.Visible       = isEditMode;
            cmdPesquisarEspecialista.Visible = isEditMode;

            cmdSalvar.Visible                = isEditMode;
            cmdSalvarB.Visible               = isEditMode;

            cmdEditar.Visible                = !isEditMode;
            cmdEditarB.Visible               = !isEditMode;
        }

        
        #region -- PESQUISAS:  Event Handlers ---------------------------------

        protected void pesquisaRfs_Confirmar(object sender, PesquisaRfsEventArgs e) {
            this.CodigoRfs = e.Id;
            txtRfs.Text = e.Nome;
            txtRfs.ToolTip = e.Descricao;
        }


        protected void pesquisaRegiao_Confirmar(object sender, PesquisaRegiaoEventArgs e) {
            this.CodigoRegiao = e.Id;
            txtRegiao.Text = e.Nome;
        }


        protected void pesquisaEspecialista_Confirmar(object sender, PesquisaEspecialistaEventArgs e) {
            this.CodigoEspecialista = e.Id;
            txtEspecialista.Text = e.Nome;
        }

        #endregion


        #region -- Page Properties --------------------------------------------


        public int CodigoLoja           {
            get {
                if (ViewState["m_codigoLoja"] != null)
                    return Convert.ToInt32(ViewState["m_codigoLoja"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoLoja", value);
            }
        }


        public int CodigoRfs            {
            get {
                if (ViewState["m_codigoRfs"] != null)
                    return Convert.ToInt32(ViewState["m_codigoRfs"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoRfs", value);
            }
        }


        public int CodigoRegiao         {
            get {
                if (ViewState["m_codigoRegiao"] != null)
                    return Convert.ToInt32(ViewState["m_codigoRegiao"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoRegiao", value);
            }
        }


        public int CodigoEspecialista   {
            get {
                if (ViewState["m_codigoEspecialista"] != null)
                    return Convert.ToInt32(ViewState["m_codigoEspecialista"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoEspecialista", value);
            }
        }


        public string PageMode {
            get {
                if (ViewState["m_pageMode"] != null)
                    return Convert.ToString(ViewState["m_pageMode"]);
                return "EDIT";
            }
            set {
                ViewState.Add("m_pageMode", value);
            }
        }


        #endregion
    }
}
